package com.demandbreakdown.xiyun.common.constant;

import java.util.Arrays;
import java.util.List;

/**
 * 图片相关常量
 *
 * @author poxz
 */
public final class PictureConstant {

    // ========== 文件上传限制 ==========

    /**
     * 支持的图片格式
     */
    public static final List<String> SUPPORTED_IMAGE_FORMATS = Arrays.asList(
            "jpg", "jpeg", "png", "gif", "webp", "bmp", "tiff"
    );

    /**
     * 图片文件Content-Type前缀
     */
    public static final String CONTENT_TYPE_IMAGE_PREFIX = "image/";

    /**
     * 图片作品最大文件大小（10MB）
     */
    public static final long MAX_PICTURE_SIZE = 10 * 1024 * 1024;

    /**
     * 头像最大文件大小（2MB）
     */
    public static final long MAX_AVATAR_SIZE = 2 * 1024 * 1024;

    /**
     * 封面最大文件大小（5MB）
     */
    public static final long MAX_COVER_SIZE = 5 * 1024 * 1024;

    // ========== 路径格式模板 ==========

    /**
     * 图片公共空间路径格式
     * 参数：userId, datePath, fileName
     * 示例：pictures/123/public/2023/10/26/uuid.jpg
     */
    public static final String PICTURE_PUBLIC_PATH_FORMAT = "pictures/%d/public/%s/%s";

    /**
     * 图片私有空间路径格式
     * 参数：userId, spaceId, datePath, fileName
     * 示例：pictures/123/456/2023/10/26/uuid.jpg
     */
    public static final String PICTURE_PRIVATE_PATH_FORMAT = "pictures/%d/%d/%s/%s";

    /**
     * 头像路径格式
     * 参数：userId, fileName
     * 示例：avatars/123/uuid.jpg
     */
    public static final String AVATAR_PATH_FORMAT = "avatars/%d/%s";

    /**
     * 封面路径格式
     * 参数：userId, fileName
     * 示例：covers/123/uuid.jpg
     */
    public static final String COVER_PATH_FORMAT = "covers/%d/%s";

    // ========== 资源类型 ==========

    /**
     * 资源类型：头像
     */
    public static final String ASSET_TYPE_AVATAR = "avatar";

    /**
     * 资源类型：封面
     */
    public static final String ASSET_TYPE_COVER = "cover";

    // ========== 图片分类 ==========

    /**
     * 默认分类：其他
     */
    public static final String CATEGORY_OTHER = "其他";

    // ========== 排序方式 ==========

    /**
     * 排序：最受欢迎（按浏览次数）
     */
    public static final String SORT_BY_POPULAR = "popular";

    /**
     * 排序：下载最多（按下载次数）
     */
    public static final String SORT_BY_DOWNLOAD = "download";

    // ========== 权限操作类型 ==========

    /**
     * 操作：查看
     */
    public static final String ACTION_VIEW = "view";

    /**
     * 操作：编辑
     */
    public static final String ACTION_EDIT = "edit";

    /**
     * 操作：删除
     */
    public static final String ACTION_DELETE = "delete";

    /**
     * 操作：下载
     */
    public static final String ACTION_DOWNLOAD = "download";

    /**
     * 操作：上传
     */
    public static final String ACTION_UPLOAD = "upload";

    /**
     * 单位：MB转换常量（字节）
     */
    public static final long MB_TO_BYTES = 1024 * 1024;

    // 私有构造函数，防止实例化
    private PictureConstant() {
        throw new UnsupportedOperationException("常量类不能被实例化");
    }
}

